package chapter07._05_Logging;

import java.util.logging.*;

/**
 * @Author: insight
 * @Description:
 * @LastDate: 2020/11/10
 */
public class Test04_FilterFormatter {

    /**
     * 日志过滤器：根据日志级别过滤日志记录的工具
     * 每个日志记录器和处理器都只有一个过滤器
     *
     * 要定义过滤器需要实现Filter接口 定义这个方法
     * public boolean isLoggable(LogRecord record);
     */
    private static final Filter myFilter = record -> {
        // 还可以调用getMessage查看记录
        String recordMessage = record.getMessage();
        // 判断是否以Entry开头
        return recordMessage.substring(0, 5).equals("Entry");

        // return record.getLevel().intValue() > Level.INFO.intValue();
    };

    /**
     * 格式化器：ConsoleHandler和FileHandler生成文本和XML格式的日志记录
     * 可以使用这个方法自定义一个格式化器
     *
     */
    Formatter myFormatter = new Formatter() {
        @Override
        public String format(LogRecord record) {
            return null;
        }
        /*
        * 还有其他可能会用到的函数
        * 重写方法 对格式化记录加上头部和尾部
        * public String getHead(Handler h);
        * public String getTail(Handler h);
        * 根据需要对记录格式化
        * public String formatMessage(LogRecord record);
        * */
    };

    public static void main(String[] args) {
        // 自定义一个过滤器 并设置
        Filter test = Test04_FilterFormatter.myFilter;
        Logger.getLogger("").setFilter(test);
        // 查看是否以Entry开头
        boolean ret = test.isLoggable(new LogRecord(Level.INFO, "Entry Test04"));
        System.out.println(ret);
    }
}
